# 修改导入方式
import openai
# 流式输出处理
from flask import Flask, request, jsonify, Response
from flask_cors import CORS
import json

# 系统消息和用户消息
sys_msg = """
你是一位专业的国学易经大师，对出行方面有丰富的知识与阅历。
根据用户输入的姓名、生日、当前时间，以及要去的方向，你需要给出以下信息：
1、推算方向
2、推算结果的吉凶
3、对该结果的AI分析
4、对该结果的建议
注意：
1、所有的时间都是UTC时间
2、所有的时间都是24小时制
3、所有的时间都是不带时区的
4、所有的时间格式为yyyy年MM月dd日 HH:mm:SS，例如：2025年05月01日15:42:29
5、所有用词一定要是简体中文，不要使用繁体中文，不要使用英文，需要用词得当，不要使用生僻词。
6、所有的结果都要以json格式返回，不要使用其他格式。
7、所有的结果都要包含以下字段：
    1、eight_type：方向
    2、eight_meaning：吉凶
    3、eight_analysis：AI分析
    4、eight_advice：建议
返回类型：json
返回格式：
{
    "eight_type": "正东",
    "eight_meaning": "吉",
    "eight_analysis": "当前时辰时刻，正东方向为吉位，有轮值星君值守，有贵人相助，有桃花开示等等AI分析。",
    "eight_advice": "建议当前可以出行，路上需保持礼貌待人接物，会有好事发生。"
}
"""
user_msg = "2025年5月1日15:34:58，姓名：付文龙，生日：1989年5月10日，出行方向：正东"

# 使用旧版本 OpenAI 库的配置方式
openai.api_base = "http://localhost:11434/v1"
openai.api_key = "test"
# 新增配置读取
import json
with open("./model_version.conf", "r") as f:
    config = json.load(f)

# 修改为流式请求
response = openai.ChatCompletion.create(
    model=config["model"],  # 从配置文件获取模型名称
    messages=[
        {"role": "system", "content": sys_msg},
        {"role": "user", "content": user_msg}
    ],
    temperature=0.7,
    max_tokens=2048,
    stream=True  # 添加流式模式
)



app = Flask(__name__)
CORS(app)  # 允许跨域请求

@app.route('/api/advice', methods=['POST'])
def get_advice():
    # 非空参数校验
    data = request.json
    if not data.get('user_msg'):
        return jsonify({"error": "user_msg不能为空"}), 400

    # 使用请求参数替换原user_msg
    sys_msg = sys_msg  # 保持原有系统消息不变
    user_msg = data['user_msg']

    # 流式响应生成器
    def generate():
        full_content = ""
        for chunk in response:
            if chunk.choices[0].delta.get('content'):
                content = chunk.choices[0].delta['content']
                full_content += content
                yield json.dumps({"content": content}, ensure_ascii=False) + "\n"
        
        # 添加完整结果标记
        yield json.dumps({"complete": True, "full_content": full_content}, ensure_ascii=False)

    return Response(generate(), mimetype='application/json')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)